(post
 :title "8sync 0.4 released"
 :date (make-date* 2017 01 08 11 45)
 :tags '("release")
 :slug "8sync-0-4-released"

 (p [Hello, hello!
     2017 is fresh upon us, and so is a new release of 8sync...
     ,(anchor [8sync 0.4]
              "ftp://ftp.gnu.org/gnu/8sync/8sync-0.4.0.tar.gz")
     is here!])

 (p [Most excitingly, we now have some decent
     ,(anchor [documentation!]
              "https://www.gnu.org/software/8sync/manual/html_node/index.html")
     Or at the very least, we finally have a tutorial
     (API documentation is still on its way).
     The tutorial walks from extending an existing actor by writing an
     irc bot, to writing your own basic actors, to writing network
     actors.
     You *know* you always wanted your very own IRC bot, so give it
     a try!])

 (p [Actors are now "center stage".
     You can now import a toplevel ,(code "(8sync)") module, and this module
     includes the full actor model system.
     The actor model is now *the* way to handle concurrent synchronization
     in 8sync.
     So, 8sync is officially less about its event loop, and more about the
     actor model.
     (It is even possible that in the future, 8sync's actor model will be
     able to run on another event loop.)])

 (p [Actors now also have implicitly run ,(code "*init*") and
     ,(code "*cleanup*") message handlers.
     Setting up actors now involves a lot less boilerplate, since
     most actors do have some sort of initialization method anyway.
     The ,(code "*cleanup*") message handler allows actors to clean up
     after themselves when they shut down, by closing a socket,
     deleting temporary files, save their current state to a database,
     or whatever.])

 (p [Sending messages has become slightly easier, as the ,(code "from-actor")
     field is now implicit, set as a parameter by the actor's hive.])

 (p [Those are the highlights!
     See the
     ,(anchor [NEWS file]
              "http://git.savannah.gnu.org/cgit/8sync.git/tree/NEWS?h=v0.4.0")
     for additional details.])

 (p [What's next?
     In 0.4.1 you can expect better automatic shutdown of coroutines
     after an actor terminates, a new HTTP module, API documentation,
     and a bunch of other goodies.])

 (p [Oh!
     And will you be at
     ,(anchor [FOSDEM 2017]
              "https://fosdem.org/2017/")
     by any chance?
     There will be a
     ,(anchor [Guile and Guix developer room]
              "https://fosdem.org/2017/schedule/track/gnu_guile/")
     and if last year was any indication, I expect it to be an absolute blast.
     I'll be there, giving
     ,(anchor [a talk about 8sync, live hacking, and network freedom]
              "https://fosdem.org/2017/schedule/track/gnu_guile/"),
     and my talk is going to be delightfully unusual.
     Instead of slides, I'm going to be running an 8sync-powered
     ,(anchor [MUD]
              "https://en.wikipedia.org/wiki/MUD")
     (multiplayer text adventure)
     powered by 8sync and
     ,(anchor [mudsync]
              "https://www.gnu.org/software/8sync/news/mudsync-lisp-game-jam.html"),
     where the rooms will be the "slides"!
     I'll also be live editing the game world *during the talk*!
     You're not gonna want to miss this!])

 (p [That's all for now.
     Happy hacking!]))
